The present application relates to computer technology, and more specifically, to multi-processor technology.
The ever-increasing demand for computing power has driven computer architectures toward multiprocessor or parallel-processor designs. While uniprocessors are limited by component and signal speed to processing only a few instructions simultaneously, a multiprocessor contains multiple independent processors, which can execute multiple instructions in parallel, substantially increasing processing speed. A group of processors within the multiprocessor can be defined as a node or cluster where each processor of the node executes instructions of one or a few processes to enable efficient, parallel processing of those processes. Some advanced multiprocessors contain multiple nodes and assign processes to different nodes in the system to provide parallel processing of multiple processes. Alternatively or in addition, the multiprocessors facilitate execution of a single process across multiple processors in the system.
Intercommunication between the multiple processors of the multiprocessor system is crucial for accurate execution of the process(es). For example, a versatile multiprocessor must be able to distribute subtasks in a number of ways, ascertain the status of the processors performing the subtasks, merge and sort messages, correct and revise data, and ascertain when and how resources have changed (as when processors fail or come online).